# 定义Account类
# 1)Account类要求具有属性:姓名(长度为2-4位)、余额(必须>20)、密码(必须是六位)，如果不满足，则给出提示信息，并给默认值(程序员自己定)
# 2)通过set xxx的方法给Account 的属性赋值。
# 3)编写方法query info()接收姓名和密码,如果姓名和密码正确，返回该账号信息
class Account:
    # 定义一个Account类，用于管理账户信息，包括姓名、薪资和密码
    name = None
    __salary = None
    __password = None

    def __init__(self, name, salary, password):
        """
        初始化方法，创建Account对象时自动调用，用于设置初始姓名、薪资和密码。

        :param name: 账户姓名
        :param salary: 账户薪资
        :param password: 账户密码
        """
        self.name = name
        self.__salary = salary
        self.__password = password

    def set_name(self, name):
        """
        设置姓名方法，验证姓名长度是否在2到4个字符之间。

        :param name: 新的账户姓名
        """
        if 2 < len(name) < 4:
            self.name = name
        else:
            print("长度需要在2-4位之间")
            self.name = 'default'

    def set_password(self, password):
        """
        设置密码方法，验证密码长度是否为6位。

        :param password: 新的账户密码
        """
        if len(password) == 6:
            self.__password = password
        else:
            print("密码长度必须为6位")
            self.__password = '123456'

    def set_salary(self, salary):
        """
        设置薪资方法，确保薪资大于20。

        :param salary: 新的账户薪资
        """
        if salary > 20:
            self.__salary = salary
        else:
            print("余额必须大于20")
            self.__salary = 20

    def query_info(self, name, password):
        """
        查询账户信息方法，需要验证用户名和密码。

        :param name: 账户姓名
        :param password: 账户密码
        :return: 账户信息字符串或错误提示
        """
        if name == self.name and password == self.__password:
            return f"姓名:{self.name},余额:{self.__salary},密码:{self.__password}"
        else:
            return "账号信息错误"


# 创建Account类的实例，并调用查询信息方法
account = Account("jack", 40, "123456")
print(account.query_info("jack", "123456"))
